package great.project.common.utils;

import great.project.common.Constants;

import java.util.Random;
import java.util.UUID;

/**
 * 随机工具
 *
 * @author zhangshun
 * @since 1.0
 */
public class RandomUtils {

    private static final Random RANDOM;

    static {
        RANDOM = Constants.RANDOM;
    }

    private static final String[] FIRST_NAME = {"刻苦", "失望", "整洁", "灰白", "孤独", "勤恳", "豪放", "迷茫", "赞许", "愉快", "狡黠", "炎热", "文雅", "浑浊", "妩媚",
            "幸福", "开朗", "喜爱", "惊讶", "适时", "可爱", "匀称", "标致", "明确", "聪慧", "团结", "夏季", "入夏", "害羞", "阳春", "美目", "俊目", "悲哀",
            "冷漠", "率直", "酷热", "失神", "俏丽", "典雅", "健谈", "体贴", "整齐", "浓黑", "玲珑", "调解", "得意", "仲夏", "清净", "兴奋", "合作", "美丽",
            "强健", "朴素", "知足", "洋气", "明亮", "俊目", "笔直", "秀丽", "高耸", "细节", "优美", "消瘦", "爽朗", "秋波", "白净", "新春", "肥大", "喜悦",
            "丽质", "希望", "乏困", "感激", "动听", "火辣", "得体", "初夏", "悠然", "坦然", "恐惧", "壮观", "发呆", "欣慰", "从容", "帅气", "潇洒", "娇柔",
            "富相", "阴险", "固执", "尊敬", "笔挺", "慌乱", "可亲", "钻研", "巍峨", "紧锁", "具体", "欢喜", "丰满", "慧眼", "疲倦", "朗目", "马虎", "精悍",
            "夏日", "文静", "陡峭", "深邃", "春游", "标致", "媚眼", "好动", "雪白", "春联", "单薄", "强烈", "温柔", "清瘦", "彪壮", "夏至", "潇洒", "剑眉",
            "欣喜", "浓重", "善变", "春色", "脆弱", "激动", "憧憬", "英俊", "瘦削", "聪明", "英俊", "潇洒", "坚强", "美丽", "漂亮", "自信", "干净", "整洁",
            "富相", "勤奋", "主观", "春节", "星眸", "失望", "丽质", "黑瘦", "匀称", "高兴", "认真", "固定", "困惑", "夏天", "干瘪", "稳重", "忠诚", "清楚",
            "傲慢", "关切", "高雅", "强壮", "冷淡", "纤弱", "细挑", "幸福", "狡诈", "和谐", "爱笑", "粗犷", "耳廓", "慈祥", "潇洒", "海涵", "讲究", "憔悴",
            "帅气", "俗气", "动人", "友好", "美满", "春蚕", "秀目", "墨黑", "健壮", "结实", "春播", "内向", "自信", "坚强", "舒服", "斜眼", "活泼", "忠心",
            "肥大", "美目", "眺望", "努力", "专注", "俊秀", "平等", "摩登", "苍白", "保守", "秀眉", "文静", "玉面", "博学", "红润", "臃肿", "春装", "媚眼",
            "丰腴", "早春", "独立", "呆滞", "慌张", "机敏", "腼腆", "修长", "愧疚", "称赞", "善良", "愤怒", "黑瘦", "匀称", "整洁", "和平", "勇敢", "粗实",
            "轻松", "俏丽", "俊秀", "安详", "细长", "热情", "乐观", "大方", "端庄", "苗条", "优美", "积极", "不凡", "春雷", "踏实", "昂贵", "温暖", "可爱",
            "刚健", "凝视", "干净", "春意", "顺从", "春笋", "坚定", "风度", "耳轮", "豁达", "年轻", "甜蜜", "简洁", "醒目", "温和", "温柔", "赞许", "微翘",
            "眉宇", "明快", "消瘦", "魁梧", "宽容", "盛夏", "果断", "耳垂", "优秀", "初春", "语言", "首领", "风铃", "春天", "合身", "笨重", "立夏", "魅力",
            "清脆", "倔强", "敏锐", "华贵", "外向", "迷人", "老实", "小巧", "笔挺", "春天", "爱心", "吟诵", "时髦", "富态", "陶醉", "杏眼", "秀美", "闷热",
            "平淡", "粗长", "春光", "短小", "友爱", "行动", "潇洒", "迷人", "快乐", "随和", "绝望", "凤眼", "春季", "浓黑", "蜡黄", "淡定", "王者", "简单",
            "漂亮", "舒心", "伟大", "春潮", "甜美", "沉静", "懊恼", "悦耳", "灼热"};


    private static final String[] LAST_NAME = {"南湘", "伪人", "淡陌", "迟暮", "崇凛", "落殇", "伪弋", "兮忆", "追梦", "水蓉", "凝雅", "初珍", "炙年", "洛雪", "萤火",
            "左眸", "暖夏", "清影", "季墨", "孤泪", "暖栀", "无忧", "离荒", "迁心", "夏夜", "北杳", "淡颜", "痕痕", "妄灸", "如空", "瞳孔", "残魂", "冷陌",
            "雨轩", "噬魂", "栀夏", "梓七", "北枳", "心雨", "楠烟", "初尘", "栀海", "戏舞", "泪殇", "傲骨", "南韵", "仙儿", "身影", "依霜", "南诵", "墨熙",
            "南酒", "归隐", "熏染", "如初", "芷芹", "赤眸", "迟醉", "囚蝶", "莫弃", "绘梦", "森屿", "吮啼", "鸠骨", "怜翠", "画棠", "紫焱", "玖念", "彦敏",
            "秦岚", "斯同", "全植", "齐童", "洁姿", "娅紫", "萌新", "跃雪", "光琰", "厚雪", "炬添", "非相", "新奕", "笛伊", "又乐", "耀铠", "程颖", "简宁",
            "杏海", "渝欢", "壹朗", "锐焓", "冬河", " 观兵", "杰耘", "石恒", "金望", "舒为", "延峻", "雪靖", "榕苑", "仲恺", "勤新", "士雄", "策洲", " 枫雯",
            "任智", "耕民", "卢希", "瑜乐", "华之", "自忠", "观连", "慕乔", "想锡", "菲乐", "千蕊", "坤庭", "正广", "肖裕", "永霜", "应玺", "润续", "振洲",
            "熙蕾", "静兮", " 青保", "厚基", "唯海", "以灿", "国乔", "平宁", "谨亮", "笙志", "凝玥", "卉荷", "鑫南", " 清橙", "盛泉", "吉新", "庆青", "力韵",
            "铨叙", "南朔", "逸瀚", "秦祜", "世翼", "同靓", "青冢", "青屿", "继方"};



    /**
     * 得到随即名字
     *
     * @return 名字
     */
    public static String getRandomName() {

        return FIRST_NAME[RANDOM.nextInt(FIRST_NAME.length)].trim() + "的" + LAST_NAME[RANDOM.nextInt(LAST_NAME.length)].trim();
    }


    /**
     * 随机手机验证码
     * @param len 验证码的长度
     * @return 返回结果
     */
    public String randomMobileMessage(int len) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            sb.append(RANDOM.nextInt(10));
        }
        return sb.toString();
    }

    /**
     * 随机手机验证码默认6位数
     *
     * @return 随机6位的验证码
     */
    public String randomMobileMessage() {
        return randomMobileMessage(6);
    }

    public static Random getRandom() {
        return RANDOM;
    }


    public static String getUuid() {
        return UUID.randomUUID().toString().replace("-", "");
    }


    /* 随机字符串 */
    /**
     * a - Z
     */
    private static final String[] LOWER_A_Z = {
            "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
    };

    private static final String[] CAPITAL_A_Z = {
            "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
    };

    /**
     * 随机获取一个字符串
     *
     * @param size 字符串的长度
     * @return 字符串
     */
    public static String randomWorld(int size) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < size; i++) {
            int i1 = random.nextInt(2);
            String s;
            if (i1 == 1) {
                s = LOWER_A_Z[random.nextInt(LOWER_A_Z.length)];
            } else {
                s = CAPITAL_A_Z[random.nextInt(CAPITAL_A_Z.length)];
            }
            sb.append(s);
        }
        return sb.toString();
    }


}
